package com.xcity.game.task.detector;

import com.alibaba.fastjson.JSONArray;
import com.xcity.game.task.Task;
import com.xcity.game.task.TaskDetector;
import com.xcity.game.task.TaskDetectorLabel;

/**
 * <pre>
 * 点赞
 * 2个参数:
 * 1.点赞对象（0：任意目标；1：好友）
 * 2.点赞数量
 * </pre>
 * @author yang.li
 *
 */
@TaskDetectorLabel(TaskDetector.TAP_LIKE)
public class TapLikeTaskDetector implements TaskDetector {

	static final String KEY = String.valueOf(TAP_LIKE);
	
	@Override
	public boolean isFinish(Task task) {
		int[] conds = task.getTemplate().getConditions();
		JSONArray data = task.getArchive().getJSONArray(KEY);
		int target = conds[0];
		int n = conds[1];
		return getSafely(data, target) >= n;
	}

	@Override
	public void onArchive(Task task, Object... vals) {
		Boolean isFriend = (Boolean) vals[0];
		// { 21: [任意目标点赞数量, 给好友点赞数量] }
		JSONArray data = task.getArchive().getJSONArray(KEY);
		if (data == null) {
			data = new JSONArray(2);
			data.add(0);
			data.add(0);
			task.getArchive().put(KEY, data);
		}
		data.set(0, data.getIntValue(0) + 1);
		if (isFriend) {
			data.set(1, data.getIntValue(1) + 1);
		}
	}
	
	static int getSafely(JSONArray data, int index) {
		return data != null && index >= 0 && index < data.size() ? data.getIntValue(index) : 0;
	}

}
